/*
@data: 2023/8/1
@author: North
@desc: test
定义返回数据格式，将返回的json格式打印出来
Code、Message、Data
s.jaon() => 将他转换为json格式（string）

后端开发：API -》 访问url -》 返回数据（无页面） -》访问者

标准化返回：
{
	"Code": 1001,
	"Message": "参数不完整",
	"Data": {}/[]/other
*/
package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"os"
)

//标准化返回的结构
type Response struct {
	Code int  `json:"code"`
	Message string  `json:"message"`
	Data interface{} `json:"data"`
}
// 从后端获取数据，将其变为标准化的结构
func Getdata() Response {
	code := 1001
	message := "参数不完整"
	data := map[string]interface{}{
		"name": "North",
		"sex": "male",
		"age": "21",
		"email":"north.12468@gmail.com",
	}
	// 创建实例
	res := Response{
		Code: code,
		Message: message,
		Data: data,
	}
	return res
}

func main()  {
	filepath := "./暑假开发/2023-08-01-go结构体/data.json"
	result := Getdata()
	// 将后端的数据转换为json格式
	jsonresult,err := json.Marshal(result)
	if err != nil {
		fmt.Println("json错误：",err)
		return
	}else {
		//直接输出
		fmt.Println(string(jsonresult))

		//写入data.json文件中
		file,err1 := os.OpenFile(filepath,os.O_RDONLY|os.O_WRONLY,0666)
		if err1 != nil {
			fmt.Println("打开文件失败")
		}
		defer file.Close()
		write := bufio.NewWriter(file)
		write.WriteString("\n")
		write.WriteString(string(jsonresult))
		write.Flush()
	}
}
